"""思路:
贪心
步数越小越好，对于每一步我们看最远能到达哪里。
利用上一次的位置与最远距离算这个区间内下一步最远能到达哪里，左右区间都是不断变大的，且只算一次，复杂度为O(n)
"""
n = int(input())
a = list(map(int,input().split()))
pre = 1
r = [1,a[0]]  # 步数，右区间
if a[0]>=n:
    print(1)
else:
    while r[-1]<n:
        mx = 0
        # 每次遍历寻找最大能跳跃的
        for j in range(pre,r[-1]):
            mx = max(mx,a[j])
        pre = r[-1]
        r = [r[0]+1,mx]
print(r[0])